Current practice in software development may involve testing and verification of software during the development phase. However, many bugs and corner cases may not be resolved satisfactorily. The testing during the development phase may not resolve all of the bugs or corner cases because testing for complete coverage is generally intractable and may take far more time and resources than economically viable.
Current practice may also involve security consultants and companies that specialize in security detecting software vulnerabilities in software. After vulnerabilities are detected, the security consultants may submit them to the original software developers. The original software developers may then be relied upon to develop a patch. However, original software developers may no longer exist or may avoid expending resources patching the vulnerability. Even if a patch is developed, redeploying the patch for a majority of users of the software may involve substantial time and expenditures of resources and may depend on a user(s) diligence in applying updates.
Another approach to remedy software vulnerabilities is to develop signatures for exploits and block them via anti-virus and anti-malware scanners deployed on client sites. However, this approach may only be effective for known threats. As a result, the anti-virus scanners do not fix unknown software vulnerabilities that allow viruses or malware to be effective.
The subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described above. Rather, this background is only provided to illustrate one example technology area where some embodiments described herein may be practiced.